{
struct vcpu_register_runstate_memory_area area;
struct vcpu_runstate_info *runstate = &per_cpu(runstate, cpu);
+ int rc;
memset(runstate, 0, sizeof(*runstate));
area.addr.v = runstate;
- HYPERVISOR_vcpu_op(VCPUOP_register_runstate_memory_area, cpu, &area);
+ rc = HYPERVISOR_vcpu_op(VCPUOP_register_runstate_memory_area, cpu, &area);
+ WARN_ON(rc && rc != -ENOSYS);
per_cpu(processed_blocked_time, cpu) =
runstate->time[RUNSTATE_blocked];
{
struct vcpu_register_runstate_memory_area area;
struct vcpu_runstate_info *runstate = &per_cpu(runstate, cpu);
+ int rc;
memset(runstate, 0, sizeof(*runstate));
area.addr.v = runstate;
- HYPERVISOR_vcpu_op(VCPUOP_register_runstate_memory_area, cpu, &area);
+ rc = HYPERVISOR_vcpu_op(VCPUOP_register_runstate_memory_area, cpu, &area);
+ WARN_ON(rc && rc != -ENOSYS);
per_cpu(processed_blocked_time, cpu) = runstate->time[RUNSTATE_blocked];
per_cpu(processed_stolen_time, cpu) = runstate->time[RUNSTATE_runnable]
struct compat_vcpu_register_runstate_memory_area area;
struct compat_vcpu_runstate_info info;
+ area.addr.p = 0;
+
rc = -EFAULT;
- if ( copy_from_guest(&area, arg, 1) )
+ if ( copy_from_guest(&area.addr.h, arg, 1) )
break;
if ( area.addr.h.c != area.addr.p ||